fix(deps): bump usd-core to >=26.5 for multithreaded collider crash fix#7
Closed
pv-nvidia wants to merge 23 commits into
Closed
fix(deps): bump usd-core to >=26.5 for multithreaded collider crash fix#7pv-nvidia wants to merge 23 commits into
pv-nvidia wants to merge 23 commits into
Conversation
# Description Depth-only RTX cameras enable the global `/rtx/sdg/force/disableColorRender` optimization. The renderer already disables that optimization when `/isaaclab/has_gui` is true, but a visualizer refactor removed the last writer of that GUI setting. As a result, the setting remained unset and adding a depth-only camera could black out the GUI viewport. This change publishes `/isaaclab/has_gui` from `AppLauncher` before `SimulationContext`, PhysX, and RTX renderer initialization. It preserves the historical semantics: a local window, livestream, or XR session counts as a GUI. Truly headless camera runs retain the depth-only rendering optimization. Regression coverage verifies the launcher state matrix and both GUI and headless depth-only renderer behavior. No additional dependencies are required. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Screenshots Not applicable. The behavior is covered by focused setting and renderer contract tests. ## Testing - `./isaaclab.sh -p -m pytest source/isaaclab/test/app/test_kwarg_launch.py::test_load_extensions_publishes_has_gui_setting source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_contract.py -q` (7 passed) - `pre-commit run --files source/isaaclab/test/app/test_kwarg_launch.py source/isaaclab/isaaclab/app/app_launcher.py source/isaaclab_physx/test/renderers/test_isaac_rtx_renderer_contract.py source/isaaclab/changelog.d/zhengyuz-fix-depth-camera-viewport.rst source/isaaclab_physx/changelog.d/fix-depth-camera-viewport-color-rendering.skip` - `python3 tools/changelog/cli.py check develop` ## Checklist - [x] I have read and understood the contribution guidelines - [x] I have run the pre-commit checks on every changed file - [x] Documentation changes are not required for this internal behavior fix - [x] My changes generate no new warnings - [x] I have added tests that prove the fix is effective - [x] I have added changelog fragments for every touched package - [x] My name is already present in `CONTRIBUTORS.md`
Bumped packages: - isaaclab: 8.0.2 → 8.0.3 - isaaclab_ov: 0.5.3 → 0.5.4 - isaaclab_ovphysx: 5.0.1 → 6.0.0 - isaaclab_rl: 0.6.2 → 0.7.0 - isaaclab_tasks: 8.1.2 → 8.1.3
## DR Legs closed-loop hold-pose and walk task Depends on newton-physics/newton#3220 Simplified many things leaving the pure DR Legs task here. - Adds the Disney DR Legs closed-loop biped (Kamino solver) and a `Isaac-DrLegs-HoldPose-v0` hold-pose task as well as `Isaac-DrLegs-Walk-v0` walking task. - Uses the `ArticulationView` - Fixes Kamino environment resets directly in the kamion_manager - DR Legs USD is loaded from newton-assets --------- Co-authored-by: Ruben Grandia <ruben.grandia@disney.com> Co-authored-by: Cursor <cursoragent@cursor.com>
…c-sim#6212) # Description REQ-12: Support capturing images from the visualizer when running headless such that we can capture the full or subset of environments during training to observe progress through frameworks such as tensorboard or wandb This feature exports per step frames from simulation from full or subset of the environments. Fixes # (OMPE-78691) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> https://github.com/isaac-sim/IsaacLab/blob/0316aea144ff1d159159db182a28319bf56be186/source/isaaclab_tasks/test/rendering_test_utils.py#L553 I save the images in the same way as the tests compare goldens moving this shared logic into utils/images.py ## Type of change - New feature (non-breaking change which adds functionality) ## Screenshots <img width="3833" height="1869" alt="image" src="https://github.com/user-attachments/assets/48ac9e8d-7cd8-4bb3-999f-754b595e5f76" /> <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: Matthew Taylor <mataylor@nvidia.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
# Description Adds the smoke test marker for annotating smoke tests which should always be run in the pipeline - Register a shared `smoke` pytest marker in the install-CI `pytest.ini` and `conftest.py`. - Tag existing installation, contrib-environment, and rigid/deformable coupling smoke tests with `@pytest.mark.smoke`. - Lets core installation, task, and RL smoke functionality checks be selected as a group via `-m smoke`. Tests named with `_smoke` have been marked: Other tests can be marked respectively if they should be classified as smoke. Fixes # (issue) <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change - New feature (non-breaking change which adds functionality) ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task -->
## Description Converts **rigid-body physics materials** to the single-namespace "fragment" model already used by the rigid-body / collision / mass / mesh / tendon / joint-drive / articulation families. Additive and backward-compatible — the legacy inheritance cfgs remain as deprecated shims. The one material-specific twist vs. the schema families: a physics material is **spawned as its own `UsdShade.Material` prim and bound** (not applied onto the body prim). So the family writer both spawns the prim + applies the anchor *and* dispatches the fragment list. ### Added - **Core** (`isaaclab.sim.spawners.materials`): - `RigidBodyMaterialFragment` — marker base typing the `physics_material` slot. - `UsdPhysicsRigidBodyMaterialCfg` — solver-common `physics:*` friction/restitution (anchor `UsdPhysics.MaterialAPI`). - `spawn_rigid_body_material_from_fragments(prim_path, fragments, stage)` — spawns the `UsdShade.Material` prim, applies the `MaterialAPI` anchor, dispatches each fragment's `func` (default `apply_namespaced`). - `spawn_physics_material(prim_path, material, stage)` — slot dispatcher: fragment list → fragment writer, else legacy cfg via its own `func`. - **PhysX** (`isaaclab_physx.sim.spawners.materials`): - `PhysxMaterialCfg` — single-namespace `physxMaterial:*` (`PhysxMaterialAPI`): compliant-contact spring + combine-mode tokens. ### Changed - Spawner `physics_material` slots (`shapes`, `meshes`, `from_files`) now accept `RigidBodyMaterialFragment | list[...]` in addition to the legacy material cfg; consume sites route through `spawn_physics_material`. **Legacy single-cfg path unchanged.** ### Scope - **Rigid-body materials only.** Deformable-body materials are deferred — they pair with the deferred deformable-body family (multi-inherited OmniPhysics + PhysX material APIs). ## Tests - New `test_material_fragments.py` (6): fragment metadata; spawn-from-fragments composes `physics:*` + `physxMaterial:*` with the `MaterialAPI` anchor + `PhysxMaterialAPI`; single-fragment; partial-update (None left unauthored); slot dispatcher handles both fragment and legacy forms. - Regression: existing `test_spawn_materials.py` (6) and `test_spawn_shapes.py` (12) pass — legacy path intact. ## Checklist - [x] Ran `./isaaclab.sh --format` - [x] Added changelog fragments (core + physx, minor) --------- Co-authored-by: Octi Zhang <zhengyuz@nvidia.com>
Bumped packages: - isaaclab: 8.0.3 → 8.1.0 - isaaclab_assets: 0.4.0 → 0.4.1 - isaaclab_newton: 1.5.1 → 1.6.0 - isaaclab_physx: 2.6.2 → 2.7.0 - isaaclab_tasks: 8.1.3 → 8.1.4
## Summary - use `get_all_matching_child_prims` when activating PhysX contact report schemas - continue matching rigid descendants under nested rigid-body trees instead of stopping at the first rigid body - add regression coverage for nested rigid bodies receiving `PhysxContactReportAPI` ## Testing - ./isaaclab.sh -p -m pytest source/isaaclab/test/sim/test_schemas.py -k activate_contact_sensors_nested_rigid_bodies -q - ./isaaclab.sh -p -m py_compile source/isaaclab/isaaclab/sim/schemas/schemas.py source/isaaclab/test/sim/test_schemas.py ## Note - Attempted `./isaaclab.sh -p -m pytest source/isaaclab_physx/test/sensors/test_contact_sensor.py -k contact_sensor_threshold -q`, but collection failed because `flaky` is not installed in the local environment.
Bumped packages: - isaaclab: 8.1.0 → 8.1.1
isaac-sim#6317) # Description Added 'motion_vectors' data type support to OVRTX renderer integration Maps the "motion_vectors" data type to OVRTX's TargetMotionSD render var, mirroring the AOV used by Isaac RTX/Replicator's built-in motion_vectors annotator. Extracts only the first two (u, v) channels via a dedicated kernel. Also extends the shared rendering-correctness test utilities to cover motion_vectors across cartpole, shadow hand, and dexsuite kuka allegro for both kit (isaacsim_rtx) and kitless (ovrtx) renderers, including a normalization path for the 2-channel output and an optional zero/non-zero action step so motion vectors have real inter-frame motion to encode before the first captured frame. ## Type of change - New feature (non-breaking change which adds functionality) - Documentation update ## Screenshots See golden images as part of changes. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
# Description Several methods in OVRTXRenderer (scene/camera/object binding setup, scene partition writes, and render) caught broad exceptions and only logged a warning, letting simulation or training continue on a renderer failure that should have stopped it. Let these propagate so callers can decide how to handle the failure, matching the existing pattern already used by _clone_environments. Object binding setup for Newton now explicitly skips when no SimulationContext is active yet, rather than crashing on an assertion deep in NewtonManager. ## Type of change - Refactor to fail hard on real errors ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Signed-off-by: Richard Lei <rilei@nvidia.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Bumped packages: - isaaclab: 8.1.1 → 8.1.2 - isaaclab_ov: 0.5.4 → 0.6.0 - isaaclab_ovphysx: 6.0.0 → 6.1.0 - isaaclab_tasks: 8.1.4 → 8.1.5
…m#6348) # Description Since isaac-sim#6314 landed, `test-isaaclab-ov` and `test-rendering-correctness-kitless` are silently skipped on every fork PR: the job-level `if:` conditions require a same-repository PR (or `develop`) whenever `ovphysx_wheelhouse_resource` is configured — which it now always is. Fork contributors and team members working from forks have had zero OVRTX / kitless rendering CI coverage since then, with no visible signal (the jobs just show "skipped"). The NGC trust boundary is correct (the wheelhouse download needs `NGC_API_KEY`, which fork PRs cannot access), and this PR keeps it intact — the `USE_OVPHYSX_WHEELHOUSE` env var from isaac-sim#6314 already resolves trust per run, and the NGC download step is gated on `wheelhouse-resource != ''`, so it never executes without credentials. This PR's own CI (it is a fork PR, and PR runs use the merge-commit workflow, so it exercises its own fix) established exactly which coverage is recoverable on the public pip stack: - **All `isaaclab_ov` (ovrtx) tests pass** with pip-index `ovrtx` + `ovphysx` — 0 failures. - **All 562 `isaaclab_ovphysx` test failures are one error**: `AttributeError: type object 'PhysX' has no attribute 'set_cpu_mode'` — `ovphysx_manager` now requires ovphysx ≥ 0.5.1, which only exists in the NGC wheelhouse; the newest public wheel is 0.4.13. ovrtx does not depend on ovphysx, so the fallback separates them at the finest granularity each job allows: - `test-isaaclab-ov` **runs on fork PRs** via the pip fallback with `exclude-pattern: isaaclab_ovphysx` (file-level — the two packages live in separate test trees; the shared `filter-pattern: "isaaclab_ov"` only bundles them by prefix match). - `test-rendering-correctness-kitless` **runs on fork PRs** with a new `test-k-expr` input that reaches the per-file pytest subprocesses spawned by `tools/conftest.py` (param-level: `not ovphysx` — the golden-image files parametrize physics backends inside each file, so fork runs keep the `newton + ovrtx` combinations and deselect only the ovphysx-backed params). - Trusted runs (same-repo PRs to `develop`, post-merge `develop`) are byte-for-byte unchanged. Once ovphysx ≥ 0.5.1 is published to the public pip index, the exclude and the `-k` deselect can both be dropped and fork PRs regain full parity. cc @AntoineRichard — isaac-sim#6314's description says "Do not merge; this PR exists only for CI validation", so flagging in case the fork-PR skip wasn't meant to reach `develop` in this form at all. Fixes the coverage gap observed on isaac-sim#6308, where the OVRTX-variant jobs skip on every attempt. ## Type of change - Bug fix (non-breaking change which fixes an issue) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
…saac-sim#6197) # Description **Part 1 of 5** of a series that splits the (oversized) benchmark refactor into reviewable, independently-mergeable PRs: - **Part 1/5 — this PR:** backend-agnostic benchmark *core* under `isaaclab.test.benchmark`. - **Part 2/5 (isaac-sim#6198):** unified `runtime.py` + `startup.py` entry scripts (depends on this PR). - **Part 3/5 (isaac-sim#6199):** unified `training.py` dispatcher + `rsl_rl`/`rl_games`/`skrl`/`sb3` adapters (depends on Parts 1–2). - **Part 4/5 (isaac-sim#6201):** play/inference benchmark. - **Part 5/5:** removal of the legacy `benchmark_*` / `run_*.sh` / `utils.py` scripts. Parts 1–4 are **purely additive**: they add the new suite alongside the existing scripts, which keep working unchanged. The legacy scripts are removed only in **Part 5/5**, so downstream consumers (OmniPerf ingestion, job runners) can migrate at their own pace. This PR adds the reusable core the entry scripts build on: - New submodules under `isaaclab.test.benchmark`: - `capture` — versions / hardware / resources / run-id capture from the benchmark recorders. - `metrics` — TensorBoard log parsing, convergence detection, EMA, mean/std/peak, success-rate tracking. - `builders` — assemble the schema-v1 `RuntimeBundle` / `TrainingBundle` / `StartupBundle`. - `stepping` — backend-agnostic random-action stepping loop. - `profiling` — `cProfile` stats parsing (own/cumulative time, call counts). - `backend_descriptor` — per-RL-library TensorBoard tag descriptors. - A new `schema` output backend that serializes a benchmark bundle through the existing `BaseIsaacLabBenchmark` metrics-backend system, plus multi-backend support (e.g. `--benchmark_backend schema,omniperf`) via a new `attach_bundle` hook. Single-backend behavior and filenames are unchanged, so existing benchmarks are unaffected. Note: the shared GPU/memory recorders gain additive peak rows (`GPU [i] Memory Used peak`, `System Memory RSS/VMS/USS peak`); every pre-existing KPI row is unchanged. This is the only change visible in the legacy scripts' OmniPerf/JSON output. Builds on the v1.0 benchmark schema merged in isaac-sim#5840. No entry scripts or docs change here — those land with Parts 2–3. Fixes # (n/a) ## Type of change - New feature (non-breaking change which adds functionality) ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation (user-facing benchmark docs land with the entry scripts in Parts 2–3) - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
## Summary - pin the OVPhysX optional runtime to `0.5.2+head.f62c22207c` - align the daily compatibility job with the tested runtime artifact - add an OVPhysX changelog fragment ## Testing - `./isaaclab.sh -p -c "..."` (verified both explicit version constraints) - `./isaaclab.sh -p -m pytest tools/changelog/test/test_validate.py` - `./isaaclab.sh -p tools/changelog/cli.py check develop` - `./isaaclab.sh -f`
Revisited the solver parameters. Now, the environments consistently use num_substeps=1. Tuned also the settings for the DR Legs task, making training 3x faster. ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there
## Summary - Deferred Kit and USD imports from modules loaded during task and configuration resolution until the runtime functionality requires them. - Prevented overlapping standalone USD package providers on x86 by restricting `usd-exchange` to ARM, where `usd-core` is not installed. - Added a metadata regression test that keeps the standalone USD providers platform-disjoint. ## Root Cause The failing installation-training environments loaded incompatible USD Python bindings in one process, with traces showing both `pxrInternal_v0_25_5` and `pxrInternal_v0_25_11`. On x86, `usd-core` and `usd-exchange` both supplied USD/`pxr` components. Their coexistence made native binding initialization depend on installation and import order, producing wrapper and converter registration failures. ## Test Plan - `./isaaclab.sh -p -m pytest source/isaaclab/test/cli/test_source_package_metadata.py` - `./isaaclab.sh -f` - Installation Tests: fresh successful run plus 10 successful reruns, each passing on x86 and ARM. ## CI Validation - Fresh run: x86 `84271139083`, ARM `84271139099` - Reruns 1-5: x86 `84278649544`, `84284392796`, `84297138420`, `84306527331`, `84317891132`; ARM `84278649480`, `84284392767`, `84297138393`, `84306527439`, `84317891100` - Reruns 6-10: x86 `84343375232`, `84356535895`, `84361942197`, `84373650598`, `84379046431`; ARM `84343375249`, `84356535827`, `84361942203`, `84373650527`, `84379046460` --------- Signed-off-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: hujc <leo.hu.sh@gmail.com>
# Description Fourbar-pole swingup RL example that uses Kamino. Builds on the core Kamino changes in isaac-sim#5962 The USD model is added to `newton-assets` in newton-physics/newton-assets#44 See video for a trained policy. 5s episode -> reset -> 5s episode. https://github.com/user-attachments/assets/9deb0597-6653-4614-b05f-5f3a03f0ff74 ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there --------- Co-authored-by: Agon Serifi <agon.serifi@disney.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Antoine RICHARD <antoiner@nvidia.com>
Bumped packages: - isaaclab: 8.1.2 → 9.0.0 - isaaclab_assets: 0.4.1 → 0.4.2 - isaaclab_ovphysx: 6.1.0 → 6.1.1 - isaaclab_tasks: 8.1.5 → 8.1.6
… utilities (isaac-sim#6334) # Description Moves the rigid object and rigid object collection interface test factories into shared underscore-prefixed utility modules so later parts can reuse them. Pure code movement with no behavior change and no ordering content. Part 1/8 of the series splitting isaac-sim#6248 into independently reviewable units. isaac-sim#6248 remains open, untouched, as the reference implementation; this stack was cut from its final tree after a `develop` sync (Kamino Core, Newton bump, OVPhysX 0.5.1). ## Stack - **Part 1/8 (this PR)**: isaac-sim#6334 — Extract rigid object interface test utilities - Part 2/8: isaac-sim#6335 — Core ordering foundation - Part 3/8: isaac-sim#6336 — Newton backend - Part 4/8: isaac-sim#6337 — PhysX backend - Part 5/8: isaac-sim#6338 — Extract articulation interface test utilities - Part 6/8: isaac-sim#6339 — OVPhysX backend - Part 7/8: isaac-sim#6340 — Cross-backend ordering interface tests - Part 8/8: isaac-sim#6341 — Events, consumers, and documentation ## Type of change - Test/documentation/refactor change ## Checklist - [x] I have read and understood the [contribution guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html) - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have added a changelog fragment under `source/<pkg>/changelog.d/` for every touched package - [x] My name exists in `CONTRIBUTORS.md` ## Test Plan - [x] `./isaaclab.sh -p -m pytest source/isaaclab/test/assets/test_rigid_object_iface.py` -> 1478 passed, 12 xfailed - [x] `./isaaclab.sh -p -m pytest source/isaaclab/test/assets/test_rigid_object_collection_iface.py` -> 1902 passed; the 7 failures + 636 errors are pre-existing on `develop` in the local environment (OVPhysX 0.4.13 wheel vs the 0.5.x binding API from isaac-sim#6314) — fail-set identical to the `develop` baseline - [x] `./isaaclab.sh -f` -> all hooks pass --------- Signed-off-by: Antoine RICHARD <antoiner@nvidia.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
OpenUSD 26.05 fixes a race in UsdPhysicsParsingUtility that could corrupt the heap (malloc_consolidate(): invalid chunk size / double free) when parsing a single rigid body with many mesh colliders beneath it, before the first simulation step (OpenUSD PR isaac-sim#4002 / commit 060715f). Bumps the kit-less usd-core pin from >=25.11,<26.0 to >=26.5,<27.0 and updates the metadata guard test (renamed from the USD 25 ABI assertion).
NewtonManager.reset(soft=False) re-finalizes the model and rebuilds the solver/state, but _initialize_contacts only constructs a new CollisionPipeline when cls._collision_pipeline is None -- and reset() never nulled it. The stale pipeline (and its _contacts), still bound to the freed old-model shape_* / broad-phase candidate_pair device buffers, was then reused against the freshly-finalized model. Its first eager narrow-phase launch (narrow_phase_kernel_gjk_mpr) reads freed/mismatched memory, producing CUDA error 700 (illegal memory access) outside any CUDA graph. Null _collision_pipeline and _contacts in reset() so initialize_solver() rebuilds them against the new model. Also invalidate any captured CUDA graph and defer re-capture to the first step() idle window, so a stale graph can never be replayed against freed buffers. Validated on the H2 tablecloth workload (env.sim.reset() poison sequence): CUDA 700 eliminated, all steps pass, exit 0.
pv-nvidia
force-pushed
the
pv/usd-2605-fix
branch
from
July 7, 2026 08:29
8d592aa to
e6040a2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Bumps the kit-less
usd-corepin from>=25.11,<26.0to>=26.5,<27.0.OpenUSD 26.05 fixes a race in
UsdPhysicsParsingUtility(
LoadUsdPhysicsFromRange→_FinalizeCollisionDescs) that corrupts the heap(
malloc_consolidate(): invalid chunk size/double free) when parsing asingle rigid body with many mesh colliders beneath it — e.g. the H2 robot on
the Newton tablecloth workload — before the first simulation step.
060715f("[usdPhysics] fix for a multithreadedcrash if one rigidbody has multiple colliders beneath"), by Paul Molodowitch.
First released in OpenUSD 26.05 (= usd-core
26.5). 26.03 was tagged 2 daysbefore the fix, so it does not contain it.
multithreaded parses, 0 crashes). Interim workaround
PXR_WORK_THREAD_LIMIT=1is not 100% reliable.
The previous
<26.0cap was added by @AntoineRichard in isaac-sim#6165 because the IsaacSim runtime stack loads USD 25.x internals, so a kit-less
usd-core 26.5causesan ABI mismatch. This PR therefore likely cannot pass install/smoke CI until
the Isaac Sim runtime's bundled OpenUSD is uplifted to ≥26.05 (or PR isaac-sim#4002 is
backported). Opened as a draft to surface exactly what CI does with the bump.
cc @AntoineRichard @kellyguo11 @ooctipus
Type of change
Checklist
test_source_package_metadata.py)